home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 August: Technology Seed / August 1998 ADC Seed CD.toast / Mac OS 8.5b2 / allegro-b2-pseudo-SDK / PInterfaces / Menus.p < prev    next >
Encoding:
Text File  |  1998-07-17  |  25.5 KB  |  678 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Menus.p
  3.  
  4.      Contains:    Menu Manager Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8.1
  7.                  Release:    Allego Seed, Use with 3.1 Universal Interfaces
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Menus;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __MENUS__}
  28. {$SETC __MENUS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC MenusIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __APPLEEVENTS__}
  35. {$I AppleEvents.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __CONDITIONALMACROS__}
  38. {$I ConditionalMacros.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __EVENTS__}
  41. {$I Events.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __PROCESSES__}
  44. {$I Processes.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __TEXTCOMMON__}
  47. {$I TextCommon.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __MACTYPES__}
  50. {$I MacTypes.p}
  51. {$ENDC}
  52. {$IFC UNDEFINED __QUICKDRAW__}
  53. {$I Quickdraw.p}
  54. {$ENDC}
  55.  
  56.  
  57. {$PUSH}
  58. {$ALIGN MAC68K}
  59. {$LibExport+}
  60.  
  61. {——————————————————————————————————————————————————————————————————————————————————————}
  62. {    • Gestalt                                                                            }
  63. {——————————————————————————————————————————————————————————————————————————————————————}
  64.  
  65. CONST
  66.     gestaltMenuMgrAttr            = 'menu';                        {  If this Gestalt exists, the PowerPC-native Menu Manager is installed }
  67.     gestaltMenuMgrPresent        = 1;
  68.  
  69.     menuPropertyInvalid            = -5603;
  70.     menuPropertyNotFoundErr        = -5604;
  71.  
  72. {——————————————————————————————————————————————————————————————————————————————————————}
  73. {    • Menu Types (for Appearance 1.0 and later)                                            }
  74. {——————————————————————————————————————————————————————————————————————————————————————}
  75.     kMenuStdMenuProc            = 63;
  76.     kMenuStdMenuBarProc            = 63;
  77.  
  78.     kMenuNoModifiers            = 0;                            {  Mask for no modifiers }
  79.     kMenuShiftModifier            = $01;                            {  Mask for shift key modifier }
  80.     kMenuOptionModifier            = $02;                            {  Mask for option key modifier }
  81.     kMenuControlModifier        = $04;                            {  Mask for control key modifier }
  82.     kMenuNoCommandModifier        = $08;                            {  Mask for no command key modifier }
  83.  
  84.     kMenuNoIcon                    = 0;                            {  No icon }
  85.     kMenuIconType                = 1;                            {  Type for ICON }
  86.     kMenuShrinkIconType            = 2;                            {  Type for ICON plotted 16 x 16 }
  87.     kMenuSmallIconType            = 3;                            {  Type for SICN }
  88.     kMenuColorIconType            = 4;                            {  Type for cicn }
  89.     kMenuIconSuiteType            = 5;                            {  Type for Icon Suite }
  90.     kMenuIconRefType            = 6;                            {  Type for Icon Ref }
  91.  
  92. {  —— end of Appearance 1.0 types }
  93.  
  94.     noMark                        = 0;                            { mark symbol for MarkItem }
  95.  
  96.                                                                 {  menu defProc messages  }
  97.     kMenuDrawMsg                = 0;
  98.     kMenuChooseMsg                = 1;
  99.     kMenuSizeMsg                = 2;
  100.     kMenuDrawItemMsg            = 4;
  101.     kMenuCalcItemMsg            = 5;
  102.     kMenuThemeSavvyMsg            = 7;                            {  is your MDEF theme-savvy?  If so, return hex 7473 in the whichItem parameter }
  103.     mDrawMsg                    = 0;
  104.     mChooseMsg                    = 1;
  105.     mSizeMsg                    = 2;
  106.     mDrawItemMsg                = 4;
  107.     mCalcItemMsg                = 5;
  108.  
  109.     kThemeSavvyMenuResponse        = $7473;
  110.  
  111.     textMenuProc                = 0;
  112.     hMenuCmd                    = 27;                            { itemCmd == 0x001B ==> hierarchical menu }
  113.     hierMenu                    = -1;                            { a hierarchical menu - for InsertMenu call }
  114.     mPopUpMsg                    = 3;                            { menu defProc messages - place yourself }
  115.     mctAllItems                    = -98;                            { search for all Items for the given ID }
  116.     mctLastIDIndic                = -99;                            { last color table entry has this in ID field }
  117.  
  118.  
  119.  
  120. TYPE
  121.     MenuInfoPtr = ^MenuInfo;
  122.     MenuInfo = RECORD
  123.         menuID:                    INTEGER;
  124.         menuWidth:                INTEGER;
  125.         menuHeight:                INTEGER;
  126.         menuProc:                Handle;
  127.         enableFlags:            LONGINT;
  128.         menuData:                Str255;
  129.     END;
  130.  
  131.     MenuPtr                                = ^MenuInfo;
  132.     MenuHandle                            = ^MenuPtr;
  133. {  MenuRef is obsolete.  Use MenuHandle.  }
  134.     MenuRef                                = MenuHandle;
  135.     MCEntryPtr = ^MCEntry;
  136.     MCEntry = RECORD
  137.         mctID:                    INTEGER;                                { menu ID.  ID = 0 is the menu bar }
  138.         mctItem:                INTEGER;                                { menu Item. Item = 0 is a title }
  139.         mctRGB1:                RGBColor;                                { usage depends on ID and Item }
  140.         mctRGB2:                RGBColor;                                { usage depends on ID and Item }
  141.         mctRGB3:                RGBColor;                                { usage depends on ID and Item }
  142.         mctRGB4:                RGBColor;                                { usage depends on ID and Item }
  143.         mctReserved:            INTEGER;                                { reserved for internal use }
  144.     END;
  145.  
  146.     MCTable                                = ARRAY [0..0] OF MCEntry;
  147.     MCTablePtr                            = ^MCTable;
  148.     MCTableHandle                        = ^MCTablePtr;
  149.     MenuCRsrcPtr = ^MenuCRsrc;
  150.     MenuCRsrc = RECORD
  151.         numEntries:                INTEGER;                                { number of entries }
  152.         mcEntryRecs:            MCTable;                                { ARRAY [1..numEntries] of MCEntry }
  153.     END;
  154.  
  155.     MenuCRsrcHandle                        = ^MenuCRsrcPtr;
  156. {$IFC TARGET_OS_WIN32 }
  157. { QuickTime 3.0 }
  158.     MenuAccessKeyRecPtr = ^MenuAccessKeyRec;
  159.     MenuAccessKeyRec = RECORD
  160.         count:                    INTEGER;
  161.         flags:                    LONGINT;
  162.         keys:                    SInt8;
  163.     END;
  164.  
  165.     MenuAccessKeyPtr                    = ^MenuAccessKeyRec;
  166.     MenuAccessKeyHandle                    = ^MenuAccessKeyPtr;
  167. PROCEDURE SetMenuItemHotKey(menu: MenuHandle; itemID: INTEGER; hotKey: ByteParameter; flags: LONGINT); C;
  168. {$ENDC}  {TARGET_OS_WIN32}
  169.  
  170.  
  171. TYPE
  172. {$IFC TYPED_FUNCTION_POINTERS}
  173.     MenuDefProcPtr = PROCEDURE(message: INTEGER; theMenu: MenuHandle; VAR menuRect: Rect; hitPt: Point; VAR whichItem: INTEGER);
  174. {$ELSEC}
  175.     MenuDefProcPtr = ProcPtr;
  176. {$ENDC}
  177.  
  178. {$IFC TYPED_FUNCTION_POINTERS}
  179.     MenuBarDefProcPtr = FUNCTION(selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT): LONGINT;
  180. {$ELSEC}
  181.     MenuBarDefProcPtr = ProcPtr;
  182. {$ENDC}
  183.  
  184. {$IFC TYPED_FUNCTION_POINTERS}
  185.     MenuHookProcPtr = PROCEDURE;
  186. {$ELSEC}
  187.     MenuHookProcPtr = ProcPtr;
  188. {$ENDC}
  189.  
  190. {$IFC TYPED_FUNCTION_POINTERS}
  191.     MBarHookProcPtr = FUNCTION(VAR menuRect: Rect): INTEGER;
  192. {$ELSEC}
  193.     MBarHookProcPtr = Register68kProcPtr;
  194. {$ENDC}
  195.  
  196.     MenuDefUPP = UniversalProcPtr;
  197.     MenuBarDefUPP = UniversalProcPtr;
  198.     MenuHookUPP = UniversalProcPtr;
  199.     MBarHookUPP = UniversalProcPtr;
  200.  
  201. CONST
  202.     uppMenuDefProcInfo = $0000FF80;
  203.     uppMenuBarDefProcInfo = $00003AB0;
  204.     uppMenuHookProcInfo = $00000000;
  205.     uppMBarHookProcInfo = $000000CF;
  206.  
  207. FUNCTION NewMenuDefProc(userRoutine: MenuDefProcPtr): MenuDefUPP;
  208.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  209.     INLINE $2E9F;
  210.     {$ENDC}
  211.  
  212. FUNCTION NewMenuBarDefProc(userRoutine: MenuBarDefProcPtr): MenuBarDefUPP;
  213.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  214.     INLINE $2E9F;
  215.     {$ENDC}
  216.  
  217. FUNCTION NewMenuHookProc(userRoutine: MenuHookProcPtr): MenuHookUPP;
  218.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  219.     INLINE $2E9F;
  220.     {$ENDC}
  221.  
  222. FUNCTION NewMBarHookProc(userRoutine: MBarHookProcPtr): MBarHookUPP;
  223.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  224.     INLINE $2E9F;
  225.     {$ENDC}
  226.  
  227. PROCEDURE CallMenuDefProc(message: INTEGER; theMenu: MenuHandle; VAR menuRect: Rect; hitPt: Point; VAR whichItem: INTEGER; userRoutine: MenuDefUPP);
  228.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  229.     INLINE $205F, $4E90;
  230.     {$ENDC}
  231.  
  232. FUNCTION CallMenuBarDefProc(selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT; userRoutine: MenuBarDefUPP): LONGINT;
  233.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  234.     INLINE $205F, $4E90;
  235.     {$ENDC}
  236.  
  237. PROCEDURE CallMenuHookProc(userRoutine: MenuHookUPP);
  238.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  239.     INLINE $205F, $4E90;
  240.     {$ENDC}
  241.  
  242. FUNCTION CallMBarHookProc(VAR menuRect: Rect; userRoutine: MBarHookUPP): INTEGER;
  243.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  244.     {To be implemented:  Glue to move parameters into registers.}
  245.     {$ENDC}
  246.  
  247. FUNCTION GetMBarHeight: INTEGER;
  248.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  249.     INLINE $3EB8, $0BAA;
  250.     {$ENDC}
  251. PROCEDURE InitMenus;
  252.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  253.     INLINE $A930;
  254.     {$ENDC}
  255. FUNCTION NewMenu(menuID: INTEGER; menuTitle: Str255): MenuHandle;
  256.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  257.     INLINE $A931;
  258.     {$ENDC}
  259. FUNCTION GetMenu(resourceID: INTEGER): MenuHandle;
  260.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  261.     INLINE $A9BF;
  262.     {$ENDC}
  263. PROCEDURE DisposeMenu(theMenu: MenuHandle);
  264.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  265.     INLINE $A932;
  266.     {$ENDC}
  267. PROCEDURE AppendMenu(menu: MenuHandle; data: Str255);
  268.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  269.     INLINE $A933;
  270.     {$ENDC}
  271. PROCEDURE InsertResMenu(theMenu: MenuHandle; theType: ResType; afterItem: INTEGER);
  272.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  273.     INLINE $A951;
  274.     {$ENDC}
  275. PROCEDURE InsertMenu(theMenu: MenuHandle; beforeID: INTEGER);
  276.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  277.     INLINE $A935;
  278.     {$ENDC}
  279. PROCEDURE DeleteMenu(menuID: INTEGER);
  280.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  281.     INLINE $A936;
  282.     {$ENDC}
  283. PROCEDURE AppendResMenu(theMenu: MenuHandle; theType: ResType);
  284.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  285.     INLINE $A94D;
  286.     {$ENDC}
  287. PROCEDURE InsertMenuItem(theMenu: MenuHandle; itemString: Str255; afterItem: INTEGER);
  288.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  289.     INLINE $A826;
  290.     {$ENDC}
  291. PROCEDURE DeleteMenuItem(theMenu: MenuHandle; item: INTEGER);
  292.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  293.     INLINE $A952;
  294.     {$ENDC}
  295. FUNCTION MenuKey(ch: CharParameter): LONGINT;
  296.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  297.     INLINE $A93E;
  298.     {$ENDC}
  299. PROCEDURE HiliteMenu(menuID: INTEGER);
  300.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  301.     INLINE $A938;
  302.     {$ENDC}
  303. PROCEDURE SetMenuItemText(theMenu: MenuHandle; item: INTEGER; itemString: Str255);
  304.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  305.     INLINE $A947;
  306.     {$ENDC}
  307. PROCEDURE GetMenuItemText(theMenu: MenuHandle; item: INTEGER; VAR itemString: Str255);
  308.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  309.     INLINE $A946;
  310.     {$ENDC}
  311. PROCEDURE SetItemMark(theMenu: MenuHandle; item: INTEGER; markChar: CharParameter);
  312.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  313.     INLINE $A944;
  314.     {$ENDC}
  315. PROCEDURE GetItemMark(theMenu: MenuHandle; item: INTEGER; VAR markChar: CharParameter);
  316.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  317.     INLINE $A943;
  318.     {$ENDC}
  319. PROCEDURE SetItemCmd(theMenu: MenuHandle; item: INTEGER; cmdChar: CharParameter);
  320.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  321.     INLINE $A84F;
  322.     {$ENDC}
  323. PROCEDURE GetItemCmd(theMenu: MenuHandle; item: INTEGER; VAR cmdChar: CharParameter);
  324.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  325.     INLINE $A84E;
  326.     {$ENDC}
  327. PROCEDURE SetItemIcon(theMenu: MenuHandle; item: INTEGER; iconIndex: INTEGER);
  328.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  329.     INLINE $A940;
  330.     {$ENDC}
  331. PROCEDURE GetItemIcon(theMenu: MenuHandle; item: INTEGER; VAR iconIndex: Byte);
  332.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  333.     INLINE $A93F;
  334.     {$ENDC}
  335. PROCEDURE SetItemStyle(theMenu: MenuHandle; item: INTEGER; chStyle: StyleParameter);
  336.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  337.     INLINE $A942;
  338.     {$ENDC}
  339. PROCEDURE GetItemStyle(theMenu: MenuHandle; item: INTEGER; VAR chStyle: Style);
  340. FUNCTION GetMenuHandle(menuID: INTEGER): MenuHandle;
  341.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  342.     INLINE $A949;
  343.     {$ENDC}
  344. PROCEDURE CalcMenuSize(theMenu: MenuHandle);
  345.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  346.     INLINE $A948;
  347.     {$ENDC}
  348. PROCEDURE DisableItem(theMenu: MenuHandle; item: INTEGER);
  349.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  350.     INLINE $A93A;
  351.     {$ENDC}
  352. PROCEDURE EnableItem(theMenu: MenuHandle; item: INTEGER);
  353.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  354.     INLINE $A939;
  355.     {$ENDC}
  356. PROCEDURE FlashMenuBar(menuID: INTEGER);
  357.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  358.     INLINE $A94C;
  359.     {$ENDC}
  360. FUNCTION PopUpMenuSelect(menu: MenuHandle; top: INTEGER; left: INTEGER; popUpItem: INTEGER): LONGINT;
  361.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  362.     INLINE $A80B;
  363.     {$ENDC}
  364. FUNCTION MenuChoice: LONGINT;
  365.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  366.     INLINE $AA66;
  367.     {$ENDC}
  368. PROCEDURE DeleteMCEntries(menuID: INTEGER; menuItem: INTEGER);
  369.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  370.     INLINE $AA60;
  371.     {$ENDC}
  372. FUNCTION GetMCInfo: MCTableHandle;
  373.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  374.     INLINE $AA61;
  375.     {$ENDC}
  376. PROCEDURE SetMCInfo(menuCTbl: MCTableHandle);
  377.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  378.     INLINE $AA62;
  379.     {$ENDC}
  380. PROCEDURE DisposeMCInfo(menuCTbl: MCTableHandle);
  381.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  382.     INLINE $AA63;
  383.     {$ENDC}
  384. FUNCTION GetMCEntry(menuID: INTEGER; menuItem: INTEGER): MCEntryPtr;
  385.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  386.     INLINE $AA64;
  387.     {$ENDC}
  388. PROCEDURE SetMCEntries(numEntries: INTEGER; menuCEntries: MCTablePtr);
  389.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  390.     INLINE $AA65;
  391.     {$ENDC}
  392. PROCEDURE DrawMenuBar;
  393.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  394.     INLINE $A937;
  395.     {$ENDC}
  396. PROCEDURE InvalMenuBar;
  397.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  398.     INLINE $A81D;
  399.     {$ENDC}
  400. PROCEDURE InitProcMenu(resID: INTEGER);
  401.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  402.     INLINE $A808;
  403.     {$ENDC}
  404. FUNCTION GetMenuBar: Handle;
  405.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  406.     INLINE $A93B;
  407.     {$ENDC}
  408. PROCEDURE SetMenuBar(menuList: Handle);
  409.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  410.     INLINE $A93C;
  411.     {$ENDC}
  412. FUNCTION SystemEdit(editCmd: INTEGER): BOOLEAN;
  413.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  414.     INLINE $A9C2;
  415.     {$ENDC}
  416. PROCEDURE SystemMenu(menuResult: LONGINT);
  417.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  418.     INLINE $A9B5;
  419.     {$ENDC}
  420. FUNCTION GetNewMBar(menuBarID: INTEGER): Handle;
  421.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  422.     INLINE $A9C0;
  423.     {$ENDC}
  424. PROCEDURE ClearMenuBar;
  425.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  426.     INLINE $A934;
  427.     {$ENDC}
  428. PROCEDURE CheckItem(theMenu: MenuHandle; item: INTEGER; checked: BOOLEAN);
  429.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  430.     INLINE $A945;
  431.     {$ENDC}
  432. FUNCTION CountMItems(theMenu: MenuHandle): INTEGER;
  433.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  434.     INLINE $A950;
  435.     {$ENDC}
  436. PROCEDURE SetMenuFlash(count: INTEGER);
  437.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  438.     INLINE $A94A;
  439.     {$ENDC}
  440. FUNCTION MenuSelect(startPt: Point): LONGINT;
  441.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  442.     INLINE $A93D;
  443.     {$ENDC}
  444. PROCEDURE InsertFontResMenu(theMenu: MenuHandle; afterItem: INTEGER; scriptFilter: INTEGER);
  445.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  446.     INLINE $303C, $0400, $A825;
  447.     {$ENDC}
  448. PROCEDURE InsertIntlResMenu(theMenu: MenuHandle; theType: ResType; afterItem: INTEGER; scriptFilter: INTEGER);
  449.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  450.     INLINE $303C, $0601, $A825;
  451.     {$ENDC}
  452.  
  453. {——————————————————————————————————————————————————————————————————————————————————————}
  454. {    • Appearance 1.0 and later Menu Manager routines                                    }
  455. {——————————————————————————————————————————————————————————————————————————————————————}
  456. FUNCTION MenuEvent({CONST}VAR inEvent: EventRecord): UInt32;
  457.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  458.     INLINE $303C, $020C, $A825;
  459.     {$ENDC}
  460. FUNCTION SetMenuItemCommandID(inMenu: MenuHandle; inItem: SInt16; inCommandID: UInt32): OSErr;
  461.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  462.     INLINE $303C, $0502, $A825;
  463.     {$ENDC}
  464. FUNCTION GetMenuItemCommandID(inMenu: MenuHandle; inItem: SInt16; VAR outCommandID: UInt32): OSErr;
  465.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  466.     INLINE $303C, $0503, $A825;
  467.     {$ENDC}
  468. FUNCTION SetMenuItemModifiers(inMenu: MenuHandle; inItem: SInt16; inModifiers: ByteParameter): OSErr;
  469.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  470.     INLINE $303C, $0404, $A825;
  471.     {$ENDC}
  472. FUNCTION GetMenuItemModifiers(inMenu: MenuHandle; inItem: SInt16; VAR outModifiers: UInt8): OSErr;
  473.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  474.     INLINE $303C, $0505, $A825;
  475.     {$ENDC}
  476. FUNCTION SetMenuItemIconHandle(inMenu: MenuHandle; inItem: SInt16; inIconType: ByteParameter; inIconHandle: Handle): OSErr;
  477.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  478.     INLINE $303C, $0606, $A825;
  479.     {$ENDC}
  480. FUNCTION GetMenuItemIconHandle(inMenu: MenuHandle; inItem: SInt16; VAR outIconType: UInt8; VAR outIconHandle: Handle): OSErr;
  481.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  482.     INLINE $303C, $0707, $A825;
  483.     {$ENDC}
  484. FUNCTION SetMenuItemTextEncoding(inMenu: MenuHandle; inItem: SInt16; inScriptID: TextEncoding): OSErr;
  485.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  486.     INLINE $303C, $0408, $A825;
  487.     {$ENDC}
  488. FUNCTION GetMenuItemTextEncoding(inMenu: MenuHandle; inItem: SInt16; VAR outScriptID: TextEncoding): OSErr;
  489.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  490.     INLINE $303C, $0509, $A825;
  491.     {$ENDC}
  492. FUNCTION SetMenuItemHierarchicalID(inMenu: MenuHandle; inItem: SInt16; inHierID: SInt16): OSErr;
  493.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  494.     INLINE $303C, $040D, $A825;
  495.     {$ENDC}
  496. FUNCTION GetMenuItemHierarchicalID(inMenu: MenuHandle; inItem: SInt16; VAR outHierID: SInt16): OSErr;
  497.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  498.     INLINE $303C, $050E, $A825;
  499.     {$ENDC}
  500. FUNCTION SetMenuItemFontID(inMenu: MenuHandle; inItem: SInt16; inFontID: SInt16): OSErr;
  501.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  502.     INLINE $303C, $040F, $A825;
  503.     {$ENDC}
  504. FUNCTION GetMenuItemFontID(inMenu: MenuHandle; inItem: SInt16; VAR outFontID: SInt16): OSErr;
  505.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  506.     INLINE $303C, $0510, $A825;
  507.     {$ENDC}
  508. FUNCTION SetMenuItemRefCon(inMenu: MenuHandle; inItem: SInt16; inRefCon: UInt32): OSErr;
  509.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  510.     INLINE $303C, $050A, $A825;
  511.     {$ENDC}
  512. FUNCTION GetMenuItemRefCon(inMenu: MenuHandle; inItem: SInt16; VAR outRefCon: UInt32): OSErr;
  513.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  514.     INLINE $303C, $050B, $A825;
  515.     {$ENDC}
  516. FUNCTION SetMenuItemRefCon2(inMenu: MenuHandle; inItem: SInt16; inRefCon2: UInt32): OSErr;
  517.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  518.     INLINE $303C, $0511, $A825;
  519.     {$ENDC}
  520. FUNCTION GetMenuItemRefCon2(inMenu: MenuHandle; inItem: SInt16; VAR outRefCon2: UInt32): OSErr;
  521.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  522.     INLINE $303C, $0512, $A825;
  523.     {$ENDC}
  524. FUNCTION SetMenuItemKeyGlyph(inMenu: MenuHandle; inItem: SInt16; inGlyph: SInt16): OSErr;
  525.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  526.     INLINE $303C, $0513, $A825;
  527.     {$ENDC}
  528. FUNCTION GetMenuItemKeyGlyph(inMenu: MenuHandle; inItem: SInt16; VAR outGlyph: SInt16): OSErr;
  529.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  530.     INLINE $303C, $0514, $A825;
  531.     {$ENDC}
  532. {——————————————————————————————————————————————————————————————————————————————————————}
  533. {    • Appearance 1.1 and later Menu Manager routines                                    }
  534. {——————————————————————————————————————————————————————————————————————————————————————}
  535. {——————————————————————————————————————————————————————————————————————————————————————}
  536. { • Properties                                                                            }
  537. {——————————————————————————————————————————————————————————————————————————————————————}
  538. { With the following property APIs, you can attach any piece of data you'd like to a    }
  539. { menu or menu item. Passing zero for the item number parameter indicates you'd like    }
  540. { to attach the data to the menu itself, and not to any specific menu item.            }
  541. FUNCTION GetMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; bufferSize: UInt32; VAR actualSize: UInt32; propertyBuffer: UNIV Ptr): OSStatus;
  542. FUNCTION GetMenuItemPropertySize(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; VAR size: UInt32): OSStatus;
  543. FUNCTION SetMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; propertySize: UInt32; propertyData: UNIV Ptr): OSStatus;
  544. FUNCTION RemoveMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType): OSStatus;
  545.  
  546. {——————————————————————————————————————————————————————————————————————————————————————}
  547. { • item enabling routines supporting > 31 items                                                                            }
  548. {——————————————————————————————————————————————————————————————————————————————————————}
  549. {  IsMenuItemEnabled works for items enabled with either Enable/DisableMenuItem and Enable/DisableItem }
  550.  
  551. PROCEDURE EnableMenuItem(theMenu: MenuHandle; item: UInt16);
  552. PROCEDURE DisableMenuItem(theMenu: MenuHandle; item: UInt16);
  553. FUNCTION IsMenuItemEnabled(menu: MenuHandle; item: UInt16): BOOLEAN;
  554. {
  555.    item icon enabling routines allowing icons to be dimmed
  556.    the item’s main enable state itself does not change
  557.    if the item is disabled, the icon will appear to be disabled
  558. }
  559. PROCEDURE EnableMenuItemIcon(theMenu: MenuHandle; item: UInt16);
  560.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  561.     INLINE $303C, $0019, $A825;
  562.     {$ENDC}
  563. PROCEDURE DisableMenuItemIcon(theMenu: MenuHandle; item: UInt16);
  564.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  565.     INLINE $303C, $0020, $A825;
  566.     {$ENDC}
  567. FUNCTION IsMenuItemIconEnabled(menu: MenuHandle; item: UInt16): BOOLEAN;
  568.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  569.     INLINE $303C, $0018, $A825;
  570.     {$ENDC}
  571. {  menu bar visibility routines }
  572. FUNCTION IsMenuBarVisible: BOOLEAN;
  573. PROCEDURE ShowMenuBar;
  574. PROCEDURE HideMenuBar;
  575. { AppendMenuItemText and InsertMenuItemText is used to add a single menu item     }
  576. { without doing any meta-character interpretation }
  577. FUNCTION AppendMenuItemText(menu: MenuHandle; inString: Str255): OSStatus;
  578. FUNCTION InsertMenuItemText(menu: MenuHandle; inString: Str255; afterItem: UInt16): OSStatus;
  579. { Get/SetMenuFont are used to save/restore the font used for drawing menus.    }
  580. FUNCTION GetMenuFont(menu: MenuHandle; VAR outFontID: SInt16; VAR outFontSize: UInt16): OSStatus;
  581. FUNCTION SetMenuFont(menu: MenuHandle; inFontID: SInt16; inFontSize: UInt16): OSStatus;
  582. {——————————————————————————————————————————————————————————————————————————————————————}
  583. {    • Menu Width Modifiers                                                                }
  584. {——————————————————————————————————————————————————————————————————————————————————————}
  585. FUNCTION GetMenuExcludesMarkColumn(menu: MenuHandle): BOOLEAN;
  586. FUNCTION SetMenuExcludesMarkColumn(menu: MenuHandle; excludesMark: BOOLEAN): OSStatus;
  587. {——————————————————————————————————————————————————————————————————————————————————————}
  588. {    • Contextual Menu routines and constants                                            }
  589. {    available with Conxtextual Menu extension 1.0 and later                                }
  590. {——————————————————————————————————————————————————————————————————————————————————————}
  591. { Gestalt Selector for classic 68K apps only. }
  592. { CFM apps should weak link and check the symbols. }
  593.  
  594. CONST
  595.     gestaltContextualMenuAttr    = 'cmnu';
  596.     gestaltContextualMenuUnusedBit = 0;
  597.     gestaltContextualMenuTrapAvailable = 1;
  598.  
  599. { Values indicating what kind of help the application supports }
  600.     kCMHelpItemNoHelp            = 0;
  601.     kCMHelpItemAppleGuide        = 1;
  602.     kCMHelpItemOtherHelp        = 2;
  603.  
  604. { Values indicating what was chosen from the menu }
  605.     kCMNothingSelected            = 0;
  606.     kCMMenuItemSelected            = 1;
  607.     kCMShowHelpSelected            = 3;
  608.  
  609. FUNCTION InitContextualMenus: OSStatus;
  610.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  611.     INLINE $7001, $AA72;
  612.     {$ENDC}
  613. FUNCTION IsShowContextualMenuClick({CONST}VAR inEvent: EventRecord): BOOLEAN;
  614.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  615.     INLINE $7002, $AA72;
  616.     {$ENDC}
  617. FUNCTION ContextualMenuSelect(inMenu: MenuHandle; inGlobalLocation: Point; inReserved: BOOLEAN; inHelpType: UInt32; inHelpItemString: Str255; {CONST}VAR inSelection: AEDesc; VAR outUserSelectionType: UInt32; VAR outMenuID: SInt16; VAR outMenuItem: UInt16): OSStatus;
  618.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  619.     INLINE $7003, $AA72;
  620.     {$ENDC}
  621. FUNCTION ProcessIsContextualMenuClient(VAR inPSN: ProcessSerialNumber): BOOLEAN;
  622.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  623.     INLINE $7004, $AA72;
  624.     {$ENDC}
  625.  
  626.  
  627.  
  628. {$IFC OLDROUTINENAMES }
  629. PROCEDURE AddResMenu(theMenu: MenuHandle; theType: ResType);
  630.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  631.     INLINE $A94D;
  632.     {$ENDC}
  633. PROCEDURE InsMenuItem(theMenu: MenuHandle; itemString: Str255; afterItem: INTEGER);
  634.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  635.     INLINE $A826;
  636.     {$ENDC}
  637. PROCEDURE DelMenuItem(theMenu: MenuHandle; item: INTEGER);
  638.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  639.     INLINE $A952;
  640.     {$ENDC}
  641. PROCEDURE SetItem(theMenu: MenuHandle; item: INTEGER; itemString: Str255);
  642.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  643.     INLINE $A947;
  644.     {$ENDC}
  645. PROCEDURE GetItem(theMenu: MenuHandle; item: INTEGER; VAR itemString: Str255);
  646.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  647.     INLINE $A946;
  648.     {$ENDC}
  649. FUNCTION GetMHandle(menuID: INTEGER): MenuHandle;
  650.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  651.     INLINE $A949;
  652.     {$ENDC}
  653. PROCEDURE DelMCEntries(menuID: INTEGER; menuItem: INTEGER);
  654.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  655.     INLINE $AA60;
  656.     {$ENDC}
  657. PROCEDURE DispMCInfo(menuCTbl: MCTableHandle);
  658.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  659.     INLINE $AA63;
  660.     {$ENDC}
  661. {$ENDC}  {OLDROUTINENAMES}
  662.  
  663.  
  664.  
  665. {$IFC TARGET_OS_WIN32 }
  666. {$ENDC}  {TARGET_OS_WIN32}
  667.  
  668. {$ALIGN RESET}
  669. {$POP}
  670.  
  671. {$SETC UsingIncludes := MenusIncludes}
  672.  
  673. {$ENDC} {__MENUS__}
  674.  
  675. {$IFC NOT UsingIncludes}
  676.  END.
  677. {$ENDC}
  678.